// import router from '@/router';
// import store from '@/store';

// const whiteList = ['/login', '/LoginRedirect'];

// router.beforeEach(async (to, from, next) => {
//   const hasToken = store.state.token;
//   if (hasToken) {
//     if (to.path === '/login' || to.path === '/LoginRedirect') {
//       next();
//     } else {
//       const hasRolesRoutes = store.state.rolesRoutes && store.state.rolesRoutes.length > 0;
//       if (hasRolesRoutes) {
//         next();
//       } else {
//         try {
//         //   根据登录接口返回的树生成路由信息嵌入Main.vue中
//           const childrenRoutes = [];
//           const { naviItems } = store.state;

//           const formatRoutes = (items) => {
//             items.forEach((item) => {
//               if (item.path) {
//                 const name = item.path.split('/')[2];
//                 childrenRoutes.push({
//                   path: item.path,
//                   name,
//                   component: (resolve) => require([`@/views${item.path}.vue`], resolve),
//                 });
//               }
//               if (item.children) { formatRoutes(item.children); }
//             });
//           };
//           formatRoutes(naviItems);
//           const asyncRoutes = [{
//             path: '/main',
//             name: 'Main',
//             component: () => import('@/views/Main.vue'),
//             children: childrenRoutes,
//           }, {
//             path: '/',
//             redirect: '/login',
//           }, {
//             path: '*',
//             component: () => import('@/views/404.vue'),
//           }];
//           store.commit('setRolesRoutes', asyncRoutes);
//           router.addRoutes(asyncRoutes);
//           next({ ...to, replace: true });
//         } catch (error) {
//           store.commit('setToken', '');
//           next('/login');
//         }
//       }
//     }
//   } else if (whiteList.indexOf(to.path) !== -1) {
//     next();
//   } else {
//     store.commit('setToken', '');
//     if (to.path === '/') {
//       next('/login');
//     } else {
//       next('/login');
//     }
//   }
// });
